package q746_minCostClimbingStairs;

public class Solution_1 {

    public static void main(String[] args) {
        Solution_1 s = new Solution_1();
        System.out.println(s.minCostClimbingStairs(new int[] {
                10,15,20
        }));
    }
    public int minCostClimbingStairs(int[] cost) {
        if (cost.length == 2){
            return Math.min(cost[0], cost[1]);
        }
        int[] dp = new int[cost.length];
        dp[0] = cost[0];
        dp[1] = cost[1];
        for (int i = 2; i < dp.length; i++) {
            // 这道题存在一个特殊性 最后一个值的位置并不是天台 而是他的后面
            // 所以dp[i]应该代表的是到达i **后面** 的最小代价 所以+在min的外面
            dp[i] = Math.min(dp[i - 1], dp[i - 2]) + cost[i];
        }

        return Math.min(dp[dp.length - 1], dp[dp.length - 2]);
    }


}
